package com.alien.admin.modules.container.service;

import com.alien.admin.modules.container.service.dto.K8sProjectChartDto;
import com.alien.admin.modules.container.service.dto.K8sProjectPodStatusDto;
import com.alien.admin.modules.container.service.dto.K8sProjectQueryCriteria;
import com.alien.admin.modules.basic.domain.Pod;
import com.alien.admin.modules.basic.domain.ReplicaSet;

import java.util.List;

/**
 *  项目维度的集群接口
 */
public interface K8sProjectService {

    /**
     * 查询项目的pod列表
     * @param criteria
     * @return
     */
    List<K8sProjectPodStatusDto> queryK8sProjectPodStatusList(K8sProjectQueryCriteria criteria);


    /**
     * 查询cpu历史记录
     * @param criteria
     * @return
     */
    K8sProjectChartDto queryPodCpuHistoryChartInfo(K8sProjectQueryCriteria criteria);

    /**
     * 查询集群的内存历史记录
     * @param criteria
     * @return
     */
    K8sProjectChartDto queryK8sMemHistoryChartInfo(K8sProjectQueryCriteria criteria);

    /**
     * 查询集群的cpu历史记录
     * @param criteria
     * @return
     */
    K8sProjectChartDto queryK8sCpuHistoryChartInfo(K8sProjectQueryCriteria criteria);

    /**
     * 查询内存历史记录
     * @param criteria
     * @return
     */
    K8sProjectChartDto queryPodMemHistoryChartInfo(K8sProjectQueryCriteria criteria);

    /**
     * 查询服务的副本列表
     * @param criteria
     * @return
     */
    List<ReplicaSet> queryReplicaSetList(K8sProjectQueryCriteria criteria);

    /**
     * 查询服务的副本列表
     * @param criteria
     * @return
     */
    List<Pod> queryPodList(K8sProjectQueryCriteria criteria);

    /**
     * 查询pod日志
     * @param criteria
     * @return
     */
    String queryPodLog(K8sProjectQueryCriteria criteria);

    /**
     * 查询服务当前运行的副本
     * @param criteria
     * @return
     */
    ReplicaSet queryCurrentReplicaSet(K8sProjectQueryCriteria criteria);


    /***
     * 回滚副本集
     * @param criteria
     * @return
     */
    Boolean rollbackReplicaSet(K8sProjectQueryCriteria criteria);

}
